home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / grafik / 3d & render tools / irit / contrib / cagd / bezier / widgets.irt < prev   
Encoding:
Text File  |  1996-07-16  |  2.7 KB  |  93 lines

  1. #
  2. # Demonstration Tools
  3. #
  4. #
  5.  
  6. ###############################################################################
  7. #  Thumb Attachements
  8. ###############################################################################
  9.  
  10. CreateThumb = FUNCTION(vect):
  11.     return = sphereSrf(0.025) * trans(vect);
  12.  
  13. AttachThumbToCurve = FUNCTION(curve): thumb: mov_xyz: pt: cent:
  14.     pt = ceval(curve, 0):
  15.     cent = vector(coord(pt, 1) ,coord(pt, 2), 0):
  16.     thumb = CreateThumb(cent):
  17.     mov_xyz = curve*trans(-cent):
  18.     attrib(thumb, "animation", list( mov_xyz )):
  19.     return = list(curve, thumb);
  20.  
  21. AttachNodesToCtlpoly = FUNCTION(plgn, colors): obj: i:
  22.     return = list(plgn):
  23.     for (i=1, 1, sizeof(plgn),
  24.         obj = CreateThumb(coerce(coord(plgn, i-1), VECTOR_TYPE)):
  25.         color(obj, nth(colors, i)):
  26.         snoc(obj, return)
  27.     );
  28.     
  29.     
  30.  
  31. ##############################################################################
  32. #  Parametric Domain Bar
  33. ###############################################################################
  34. #
  35. #  |---|----|----|----|----|-----|-----|-----|-----|-----|
  36. #  0                                                     1
  37. #
  38. # Objects created:          Index:
  39. #    thumb bar               1
  40. #       min tick                2
  41. #       max tick                3+numOfSegments
  42. #
  43. DomainBar = FUNCTION(numOfSegments, dim): step: i: small: large1: large2: bar:
  44.     step = 1.0/(numOfSegments):
  45.     if (dim < 2,
  46.         bar = ctlpt(E2, 0, 0) + ctlpt(E2, 1, 0):
  47.         large1 =  ctlpt(E2, 0, -0.025) + ctlpt(E2, 0, 0.025):
  48.         large2 =  ctlpt(E2, 1, -0.025) + ctlpt(E2, 1, 0.025):
  49.         return = list(bar, large1):
  50.         for (i = step, step, 1-step,
  51.             snoc(ctlpt(E2, i, -0.015) + ctlpt(E2, i, 0.015), return)
  52.         ):
  53.         snoc(large2, return),
  54.  
  55.         bar = ctlpt(E2, 0, 0) + ctlpt(E2, 0, 1):
  56.         large1 =  ctlpt(E2, -0.025, 0) + ctlpt(E2, 0.025, 0):
  57.         large2 =  ctlpt(E2, -0.025, 1) + ctlpt(E2, 0.025, 1):
  58.         return = list(bar, large1):
  59.         for (i = step, step, 1-step,
  60.             snoc(ctlpt(E2, -0.015, i) + ctlpt(E2, 0.015, i), return)
  61.         ):
  62.         snoc(large2, return)
  63.     );
  64.     
  65.  
  66. ###############################################################################
  67. #  Parametric Domain Trackbar
  68. ###############################################################################
  69. #
  70. #  |---|----|----|----|----|-----|-----|--[]-|-----|-----|
  71. #  0                              1
  72. #
  73. # Objects created:          Index:
  74. #    value            1
  75. #       thumb                   2
  76. #    thumb bar               3
  77. #       min tick                4
  78. #       max tick                5+numOfSegments
  79. #
  80. DomainTrackbar = FUNCTION(numOfSegments, val): thumb: mov_x:
  81.     thumb = CreateThumb(vector(val, 0, 0)):
  82.     mov_x = ctlpt(E1, 0) + ctlpt(E1, 1):
  83.     attrib(thumb, "animation", list(mov_x)):
  84.     return = list(val, thumb) +  DomainBar(numOfSegments, 1);
  85.  
  86. GetDomainTrackbarThumb = FUNCTION(bar) :
  87.     return = nth(bar, 1);
  88.  
  89. GetDomainTrackbarValue = FUNCTION(bar):
  90.     return = nth(bar, 0);
  91.  
  92.  
  93.